import Vue from 'vue'
import Router from 'vue-router'
import { constantRouterMap } from './router.config.js'
// hack router push callback
const originalPush = Router.prototype.push
Router.prototype.push = function push(location, onResolve, onReject) {
  if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
  return originalPush.call(this, location).catch(err => err)
}

Vue.use(Router)

const createRouter = () =>
  new Router({
    mode: 'history', // 如果你是 history模式 需要配置vue.config.js publicPath
    base: '/',
    scrollBehavior: () => ({ y: 0 }),
    routes: constantRouterMap
  })

const router = createRouter()

router.beforeEach((to, from, next) => {
  // 判断是否需要缓存
  /* if (to.path === '/company' && from.path === '/product') {
    to.meta.keepAlive = true // 让 列表页 缓存，即不刷新
    next()
  } else {
    to.meta.keepAlive = false // 让 列表页 即不缓存，刷新
    next()
  }*/
  next()
  /* if (getToken()) {
    if (to.path === '/login') {
      next({ path: '/home' })
    }else {
      if(to.path === '/'){
        next({ path: '/home' })
      }else{
        next()
      }
    }
  }else {
    if(to.path !== '/login'){
      if(to.path == '/'){
        next()
      }else{
        next({ path: '/' })
      }
    }
  } */
})

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

export default router
